Memory-driven computing provides a memory architecture where a large pool of non-volatile, persistent memory is accessible by a large number of computing devices. This architecture provides an efficient memory environment because of the size of the fabric-attached persistent memory pool, which blends memory and storage, allowing data to be persistently stored in media that permit memory-speed accesses rather than slow storage accesses. The fact that it is byte addressable allows access to data in its in-memory representation without requiring format conversions between the in-memory and on-storage representations.
Fabric-attached memory (FAM) refers to memory that is accessible to compute elements (e.g., processors) across a memory-semantic fabric. Compute elements may load data from FAM using processor load instructions, store data to FAM using processor store instructions, and perform atomic operations supported by the fabric. Fabrics are scalable in that they can be direct connections between a compute element and the FAM, or more generic (and larger-scale) topologies using fabric switches. These generic topologies allow the shared FAM to scale to much larger than would be possible in other scale up shared memory architectures. Unlike scale out architectures, where system scaling is done by adding units of processors and memory and storage, fabrics permit a disaggregated architecture, where compute elements and memory can be independently scaled, to best match the characteristics of the workload, without wasted resources (e.g., if a workload required lots of memory but didn't need additional processing capabilities).
While such fabric-attached persistent memory undoubtedly provides efficient memory accesses, some characteristics reduce its more complete implementation. For example, fabric-attached persistent memory may result in slower accesses as compared to local private memory such as node-local memory, e.g., caches.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements. The figures are not necessarily to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples and/or implementations consistent with the description; however, the description is not limited to the examples and/or implementations provided in the drawings.